/**
 * 
 */
package com.jcode.netty.annotation;
//
//import com.jcode.netty.process.RequestService;
//import org.springframework.context.ApplicationContext;
//import org.springframework.context.support.ClassPathXmlApplicationContext;
//import org.springframework.stereotype.Service;
//import org.springframework.util.StringUtils;
//
//import java.lang.reflect.Method;
//import java.util.HashMap;
//import java.util.Map;

/**
 *
 * @Author daijunjie
 * @DateTime 2016年5月24日 下午3:59:22
 * 
 */
public class RoutingTable {

//	private static final Map<String, RequestService> serviceMap = new HashMap<String, RequestService>();
//
//	public RoutingTable() {
//	}
//
//	/**
//	 * 初始化加载服务
//	 */
//	public void init() {
//		// 获取所有service bean TODO
//		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//		Map<String, Object> serviceBeans = context.getBeansWithAnnotation(Service.class);
//		Map<String, Object> ComponentBeans = context.getBeansWithAnnotation(Service.class);
//		for (Object object : serviceBeans.values()) {
//			Method[] methods = object.getClass().getDeclaredMethods();
//			for (Method method : methods) {
//				Request request = method.getAnnotation(Request.class);
//				String name = request.value();
//				RequestService rs = new RequestService();
//				rs.setService(object);
//				rs.setMethod(method);
//				Class<?>[] parameterTypes = method.getParameterTypes();
//				rs.setParameterTypes(parameterTypes);
//				if (StringUtils.isEmpty(name)) {
//					name = object.getClass().getName() + "_" + method.getName();
//					if (parameterTypes != null) {
//						for (Class<?> clazz : parameterTypes) {
//							name = "_" + clazz.getName();
//						}
//					}
//				} else {
//					rs.setName(name);
//				}
//				serviceMap.put(name, rs);
//			}
//		}
//
//	}
//
//	public RequestService getService(String name) {
//		return serviceMap.get(name);
//	}
//
//	public Object route(String request, Object... args) throws Exception {
//		RequestService rs = serviceMap.get(request);
//		if (rs == null) {
//			// return 服务不存在
//		}
//		try {
//			Method method = rs.getMethod();
//			Object service = rs.getService();
//			Object result = method.invoke(service, args);
//			return result;
//		} catch (Exception e) {
//			e.printStackTrace();
//			// TODO throw Exception
//			return null;
//		}
//	}

}
